TTL (Time to Live) হলো একটি বিশেষ ফিচার যা DynamoDB তে ডেটার আয়ু (lifetime) নির্ধারণ করতে ব্যবহৃত হয়। এটি একটি ডেটা অপারেশন বা রেকর্ডের মধ্যে সময়সীমা নির্ধারণ করে, যার পরে সেটি স্বয়ংক্রিয়ভাবে মুছে যায়। এই ফিচারটি বিশেষভাবে কার্যকর যখন আপনি একটি নির্দিষ্ট সময়ের পর অপ্রয়োজনীয় বা পুরোনো ডেটা মুছে ফেলতে চান, যেমন লোগ ফাইল, সেশন ডেটা বা ক্যাশে তথ্য।
TTL সহ, আপনি ডেটার expire time (অথবা "expiry timestamp") নির্ধারণ করতে পারেন, যা নির্দেশ করে কোন সময়ে ডেটাটি স্বয়ংক্রিয়ভাবে ডিলিট হবে।
TTL কীভাবে কাজ করে:
- Expire Timestamp: TTL ফিচারটি ব্যবহারের জন্য, ডেটার একটি নির্দিষ্ট expire timestamp ফিল্ড থাকতে হবে, যা ইউনিকোড টাইমস্ট্যাম্প (যেমন, Unix epoch টাইম বা মাইক্রোসেকেন্ড ভিত্তিক) আকারে সংরক্ষিত হয়। এই timestamp ডেটার লাইফটাইম নির্ধারণ করে, এবং ডেটাটি সেই সময়ে পৌঁছানোর পর ডিলিট হয়ে যাবে।
- TTL সক্রিয় করা: DynamoDB তে TTL সক্রিয় করতে, আপনাকে AWS Management Console, AWS CLI, বা AWS SDK এর মাধ্যমে টেবিলের জন্য TTL ফিচারটি চালু করতে হবে। যখন আপনি TTL সক্রিয় করেন, তখন একটি নির্দিষ্ট Attribute এর মাধ্যমে expire timestamp নির্ধারণ করতে হবে।
- TTL Process:
- ডেটা যেহেতু TTL ফিচার দিয়ে নির্ধারিত সময়ের পর মুছে যাবে, DynamoDB এর ব্যাকগ্রাউন্ড প্রসেস প্রতিদিন বা নির্দিষ্ট সময় অন্তর ডেটা স্ক্যান করে যে আইটেমগুলি expire হয়েছে সেগুলি ডিলিট করে।
- এটি একটি অটোমেটিক প্রসেস এবং ডেটার মুছে ফেলার জন্য কোনো অতিরিক্ত হস্তক্ষেপের প্রয়োজন হয় না।
- Data Deletion:
- যখন ডেটার TTL পেরিয়ে যায়, DynamoDB স্বয়ংক্রিয়ভাবে সেই ডেটা মুছে ফেলবে। এটি অথেনটিকেশন ডেটা, সেশন ইনফরমেশন, ক্যাশ ডেটা, অথবা এমন ডেটা যেগুলি কেবল একটি নির্দিষ্ট সময়কালীন প্রযোজ্য, সেগুলির জন্য উপযুক্ত।
TTL সক্রিয় করা (AWS Management Console)
- AWS Management Console এ লগ ইন করুন।
- DynamoDB টেবিলটি নির্বাচন করুন।
- Overview পেইজে গিয়ে Time to Live অপশনটি নির্বাচন করুন।
- Enable TTL ক্লিক করুন এবং Attribute name সেট করুন (যেমন:
expireAt
বা আপনার নির্দিষ্ট নাম দিয়ে একটি ফিল্ড তৈরি করুন)। - Save ক্লিক করুন।
এখন আপনি টেবিলের আইটেমে সেই ফিল্ড (expire timestamp) দিয়ে ডেটা ইনসার্ট করলে, সেটি স্বয়ংক্রিয়ভাবে TTL এর মাধ্যমে নির্দিষ্ট সময় পর মুছে যাবে।
TTL এর ব্যবহার:
- Session Management: আপনি ব্যবহারকারীর সেশন ডেটা রাখার জন্য TTL ব্যবহার করতে পারেন, যাতে সেশন শেষ হওয়ার পর ডেটা স্বয়ংক্রিয়ভাবে মুছে যায়। উদাহরণস্বরূপ,
sessionExpiry
টাইমস্ট্যাম্প ফিল্ড ব্যবহার করা হতে পারে। - Log Data: লগ ডেটা বা অন্যান্য অস্থায়ী ডেটা যেমন ক্যাশ বা টেম্পোরারি ফাইলের জন্য TTL ব্যবহার করা যায়, যাতে পুরোনো তথ্য স্বয়ংক্রিয়ভাবে মুছে যায় এবং স্টোরেজ অপ্টিমাইজড থাকে।
- Product Catalogs (For Flash Sales): TTL ব্যবহার করে আপনি সীমিত সময়ের জন্য একটি প্রোডাক্ট ক্যাটালগ তৈরি করতে পারেন এবং সেই ক্যাটালগের ডেটা একটি নির্দিষ্ট সময় পর মুছে যাবে।
TTL এর সুবিধা:
- স্টোরেজ অপ্টিমাইজেশন: অপ্রয়োজনীয় বা পুরোনো ডেটা অটোমেটিক্যালি মুছে যাওয়ায় আপনার ডেটাবেসে স্টোরেজের অপচয় কমে।
- সহজ ম্যানেজমেন্ট: ডেটার ম্যানুয়ালি ডিলিট করার প্রয়োজন নেই, তাই পরিচালনা সহজ হয়।
- কস্ট সাশ্রয়ী: পুরোনো ডেটা মুছে যাওয়ায় স্টোরেজ খরচ কমে এবং আপনার ডেটাবেস অপটিমাইজড থাকে।
TTL এর সীমাবদ্ধতা:
- ডেটা বিলম্বে ডিলিট হয়: TTL এর মাধ্যমে ডেটা মুছে ফেলা কিছু সময়ের মধ্যে হতে পারে, যা ফোরকাস্টেড টাইমের ঠিক পরপর নাও হতে পারে।
- পূর্ববর্তী ডেটা ব্যবহারযোগ্য নয়: একবার ডেটা TTL দিয়ে মুছে গেলে তা পুনরুদ্ধার করা সম্ভব নয়, তাই নিশ্চিত হতে হবে যে আপনার অ্যাপ্লিকেশন ঠিকভাবে ডেটা মুছে যাওয়ার পূর্বে প্রয়োজনে ডেটা গ্রহণ করছে।
TTL এর উদাহরণ:
ধরা যাক, আপনি একটি টেবিল UserSessions
তৈরি করেছেন, যেখানে ব্যবহারকারীর লগইন সময়ের সাথে একটি expireAt
ফিল্ড রয়েছে যা ব্যবহারকারীর সেশন শেষে ডেটা মুছে দেয়। এই ফিল্ডে আপনি সেশনের শেষ সময়ের টাইমস্ট্যাম্প সংরক্ষণ করতে পারেন। টেবিলের TTL সক্রিয় হলে, এই সেশন শেষে সেই ডেটা স্বয়ংক্রিয়ভাবে মুছে যাবে।
Python (Boto3) দিয়ে ডেটা ইনসার্টের উদাহরণ:
import boto3
import time
# DynamoDB client তৈরি
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('UserSessions')
# সেশন শেষ হওয়ার সময়ের জন্য টাইমস্ট্যাম্প (এখানে 1 ঘণ্টা পরে)
expiry_time = int(time.time()) + 3600 # 1 ঘণ্টা পর
# ডেটা ইনসার্ট করা
table.put_item(
Item={
'userId': 'user123',
'sessionData': 'Some data',
'expireAt': expiry_time # TTL ফিল্ড
}
)
এখন, যখন expireAt
এর সময় চলে আসবে, DynamoDB এই আইটেমটিকে স্বয়ংক্রিয়ভাবে মুছে ফেলবে।
TTL একটি শক্তিশালী ফিচার যা ডেটার অযাচিত জমা কমাতে এবং ডেটাবেসকে কার্যকরী ও অপটিমাইজড রাখতে সাহায্য করে।